#ifndef BASEEFFECT_H
#define BASEEFFECT_H

#include "GFX.h"

#include "PenjinTypes.h"

enum EFFECT_TYPE
{
    etBase,
    etFade,
    etZoom,
    etOverlay
};

class BaseEffect
{
public:
    BaseEffect(){finished = false; type = etBase; limit = 1;};
    virtual ~BaseEffect(){};

    bool hasFinished() const {return finished;};

    EFFECT_TYPE getType() const {return type;};
    int getLimit() const {return limit;};

    // general
    virtual void update()=0;
#ifdef PENJIN_SDL
    virtual void render(SDL_Surface* screen)=0;
#else
    virtual void render()=0;
#endif

protected:
    bool finished;
    EFFECT_TYPE type;
    uint limit;
};

#endif // BASEEFFECT_H

